//package com.antaohua.platfrom.framework.base.criteria;
//
//import java.util.Collection;
//
//import org.hibernate.criterion.Criterion;
//import org.hibernate.criterion.InExpression;
//import org.hibernate.criterion.LikeExpression;
//import org.hibernate.criterion.MatchMode;
//import org.hibernate.criterion.NotNullExpression;
//import org.hibernate.criterion.NullExpression;
//import org.hibernate.criterion.Restrictions;
//import org.hibernate.criterion.SimpleExpression;
//
//public class WhereRestriction {
//
//	public static SimpleExpression eq(String propertyName, Object value) {
//		return Restrictions.eq(propertyName, value);
//	}
//
//	/**
//	 * Apply an "equal" constraint to the named property.  If the value
//	 * is null, instead apply "is null".
//	 *
//	 * @param propertyName The name of the property
//	 * @param value The value to use in comparison
//	 *
//	 * @return The Criterion
//	 *
//	 * @see #eq
//	 * @see #isNull
//	 */
//	public static Criterion eqOrIsNull(String propertyName, Object value) {
//		return Restrictions.eqOrIsNull(propertyName, value);
//	}
//
//	/**
//	 * Apply a "not equal" constraint to the named property
//	 *
//	 * @param propertyName The name of the property
//	 * @param value The value to use in comparison
//	 *
//	 * @return The Criterion
//
//	 * @see SimpleExpression
//	 */
//	public static SimpleExpression ne(String propertyName, Object value) {
//		return Restrictions.ne(propertyName, value);
//	}
//
//	/**
//	 * Apply a "not equal" constraint to the named property.  If the value
//	 * is null, instead apply "is not null".
//	 *
//	 * @param propertyName The name of the property
//	 * @param value The value to use in comparison
//	 *
//	 * @return The Criterion
//	 *
//	 * @see #ne
//	 * @see #isNotNull
//	 */
//	public static Criterion neOrIsNotNull(String propertyName, Object value) {
//		return Restrictions.neOrIsNotNull(propertyName, value);
//	}
//
//	/**
//	 * Apply a "like" constraint to the named property
//	 *
//	 * @param propertyName The name of the property
//	 * @param value The value to use in comparison
//	 *
//	 * @return The Criterion
//	 *
//	 * @see SimpleExpression
//	 */
//	public static SimpleExpression like(String propertyName, Object value) {
//		return Restrictions.like(propertyName, value);
//	}
//
//	/**
//	 * Apply a "like" constraint to the named property using the provided match mode
//	 *
//	 * @param propertyName The name of the property
//	 * @param value The value to use in comparison
//	 * @param matchMode The match mode to use in comparison
//	 *
//	 * @return The Criterion
//	 *
//	 * @see SimpleExpression
//	 */
//	public static SimpleExpression like(String propertyName, String value, MatchMode matchMode) {
//		// todo : update this to use LikeExpression
//		return new SimpleExpression( propertyName, matchMode.toMatchString( value ), " like " );
//	}
//
//	/**
//	 * A case-insensitive "like" (similar to Postgres <tt>ilike</tt> operator)
//	 *
//	 * @param propertyName The name of the property
//	 * @param value The value to use in comparison
//	 *
//	 * @return The Criterion
//	 *
//	 * @see LikeExpression
//	 */
//	public static Criterion ilike(String propertyName, Object value) {
//		if ( value == null ) {
//			throw new IllegalArgumentException( "Comparison value passed to ilike cannot be null" );
//		}
//		return ilike( propertyName, value.toString(), MatchMode.EXACT );
//	}
//
//	/**
//	 * A case-insensitive "like" (similar to Postgres <tt>ilike</tt> operator) using the provided match mode
//	 *
//	 * @param propertyName The name of the property
//	 * @param value The value to use in comparison
//	 * @param matchMode The match mode to use in comparison
//	 *
//	 * @return The Criterion
//	 *
//	 * @see LikeExpression
//	 */
//	public static Criterion ilike(String propertyName, String value, MatchMode matchMode) {
//		if ( value == null ) {
//			throw new IllegalArgumentException( "Comparison value passed to ilike cannot be null" );
//		}
//		return new LikeExpression( propertyName, value, matchMode, null, true );
//	}
//
//	/**
//	 * Apply a "greater than" constraint to the named property
//	 *
//	 * @param propertyName The name of the property
//	 * @param value The value to use in comparison
//	 *
//	 * @return The Criterion
//	 *
//	 * @see SimpleExpression
//	 */
//	public static SimpleExpression gt(String propertyName, Object value) {
//		return new SimpleExpression( propertyName, value, ">" );
//	}
//
//	/**
//	 * Apply a "less than" constraint to the named property
//	 *
//	 * @param propertyName The name of the property
//	 * @param value The value to use in comparison
//	 *
//	 * @return The Criterion
//	 *
//	 * @see SimpleExpression
//	 */
//	public static SimpleExpression lt(String propertyName, Object value) {
//		return new SimpleExpression( propertyName, value, "<" );
//	}
//
//	/**
//	 * Apply a "less than or equal" constraint to the named property
//	 *
//	 * @param propertyName The name of the property
//	 * @param value The value to use in comparison
//	 *
//	 * @return The Criterion
//	 *
//	 * @see SimpleExpression
//	 */
//	public static SimpleExpression le(String propertyName, Object value) {
//		return new SimpleExpression( propertyName, value, "<=" );
//	}
//	/**
//	 * Apply a "greater than or equal" constraint to the named property
//	 *
//	 * @param propertyName The name of the property
//	 * @param value The value to use in comparison
//	 *
//	 * @return The Criterion
//	 *
//	 * @see SimpleExpression
//	 */
//	public static SimpleExpression ge(String propertyName, Object value) {
//		return new SimpleExpression( propertyName, value, ">=" );
//	}
//	/**
//	 * Apply an "in" constraint to the named property.
//	 *
//	 * @param propertyName The name of the property
//	 * @param values The literal values to use in the IN restriction
//	 *
//	 * @return The Criterion
//	 *
//	 * @see InExpression
//	 */
//	public static Criterion in(String propertyName, Object... values) {
//		return new InExpression( propertyName, values );
//	}
//
//	/**
//	 * Apply an "in" constraint to the named property.
//	 *
//	 * @param propertyName The name of the property
//	 * @param values The literal values to use in the IN restriction
//	 *
//	 * @return The Criterion
//	 *
//	 * @see InExpression
//	 */
//	public static Criterion in(String propertyName, Collection values) {
//		return new InExpression( propertyName, values.toArray() );
//	}
//
//	/**
//	 * Apply an "is null" constraint to the named property
//	 *
//	 * @param propertyName The name of the property
//	 *
//	 * @return Criterion
//	 *
//	 * @see NullExpression
//	 */
//	public static Criterion isNull(String propertyName) {
//		return new NullExpression( propertyName );
//	}
//
//	public static Criterion isNotNull(String propertyName) {
//		return new NotNullExpression( propertyName );
//	}
//}
